package cn.lzj.system.controller;

import cn.lzj.basic.query.BaseQuery;
import cn.lzj.basic.util.AjaxResult;
import cn.lzj.basic.util.PageList;
import cn.lzj.system.domain.SystemDictionaryType;
import cn.lzj.system.service.ISystemDictionaryTypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
/**
 *    这是RestFul风格的接口,目的是为了和前端接口对接
 *    部门管理接口
 *        要求前后端传递参数必须要使用json对象
 *     写接口的三要素
 *         1.请求地址----
 *         2.请求参数----
 *         3.返回值----
 *      接口注解有  ①@GetMapping =@RequestMapping(value="/id",method = RequestMethod.GET)
 *                ②@Postapping
 *                ③@PutMapping
 *                ④@PatchMapping
 */
@RestController//这个注解相当于@Controller+@RequestBody
@RequestMapping("/DicType")  //路径:local host:8080/dept
public class SystemDictionaryTypeController{
    //注入service层的支持
    @Autowired
    private ISystemDictionaryTypeService iSystemDictionaryTypeService;

    //新增和修改  请求类型为put
    @PutMapping  //路径: localhost:8080/dept/{id},id是占位符,可变
    public AjaxResult addOrUpdate(@RequestBody SystemDictionaryType systemDictionaryType) {
        try {
            if (systemDictionaryType.getId() == null) {
                iSystemDictionaryTypeService.add(systemDictionaryType);
            } else {
                iSystemDictionaryTypeService.update(systemDictionaryType);
            }
            return AjaxResult.util();
        } catch (Exception e) {
            e.printStackTrace();
            return AjaxResult.util()
                    .setsuccess(false)
                    .setmessage("噢哟，系统报错了，我们正在殴打程序员！！!");
        }
    }

    //删除   delete
    //@PathVariable映射 URL 绑定的占位符
    @DeleteMapping("/{id}")
    public AjaxResult remove(@PathVariable("id") Long id) {
        try {
            iSystemDictionaryTypeService.remove(id);
            return AjaxResult.util();
        } catch (Exception e) {
            e.printStackTrace();
            return AjaxResult.util()
                    .setsuccess(false)
                    .setmessage("噢哟，系统报错了，我们正在殴打程序员！！!");
        }
    }

    //获取单条数据的逻辑  请求类型:get
    @GetMapping("/{id}")
    public SystemDictionaryType queryById(@PathVariable("id") Long id) {
        return iSystemDictionaryTypeService.queryById(id);
    }

    //获取所有数据的方法  请求类型:get
    @GetMapping
    public List<SystemDictionaryType> queryAll() {
        return iSystemDictionaryTypeService.queryAll();
    }

    //分页和高级查询  请求类型是post
    @PostMapping
    public PageList<SystemDictionaryType> queryPage(@RequestBody BaseQuery query) {
        return iSystemDictionaryTypeService.queryPage(query);
    }

    /**
     * 批量删除的接口
     * @param ids
     * @return
     */
    @PatchMapping
    public AjaxResult removeList(@RequestBody List<Long> ids) {
        try {
            iSystemDictionaryTypeService.removeList(ids);
            return AjaxResult.util();
        } catch (Exception e) {
            e.printStackTrace();
            return AjaxResult.util()
                    .setsuccess(false)
                    .setmessage("噢哟，系统报错了，我们正在殴打程序员！！!");
        }
    }

    /**
     * 查询无限极部门树
     * @return
     */
/*    @GetMapping("/tree")
    public List<SystemDictionaryType> querytree() {
        return systemDictionaryType.querytree();
    }*/
}
